package com.corpgovernment.organization.vo.budget;

import lombok.Getter;
import lombok.Setter;

import javax.validation.Valid;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.util.List;

@Getter
@Setter
public class AddBudgetVo {

    /**
     * 主键，追加时用
     */
    private String id;

    /**
     * 1-新增，2-追加
     */
    @NotBlank(message = "操作类型不能为空")
    private String type;

    /**
     * 公司Id
     */
    @NotBlank(message = "公司Id不能为空")
    private String corpId;

    /**
     * 开始时间 -- 追加可不传
     */
    private String startTime;

    /**
     * 结束时间 -- 追加可不传
     */
    private String endTime;

    /**
     * 1-按部门，2-按成本中心，3-项目 -- 追加可不传
     */
    private String rangeType;

    /**
     * 部门选择结果 -- 追加可不传
     */
    @Valid
    private List<DepartmentVo> department;

    /**
     * 预算总金额
     */
    @NotNull(message = "预算总金额不能为空")
    @DecimalMin(value = "0", message = "预算总金额不能为负数")
    @DecimalMax(value = "999999999.99", message = "预算总金额超过上限")
    private BigDecimal budgetAmount;

    /**
     * 预算告警阀值
     */
    @NotNull(message = "预算告警阀值不能为空")
    @DecimalMin(value = "0", message = "预算告警阀值不能为负")
    @DecimalMax(value = "99.99", message = "预算告警阀值超过上限")
    private BigDecimal alarmThreshold;

    /**
     * 预算类型大对象
     */
    @NotEmpty(message = "预算类型不能为空")
    @Valid
    private List<BudgetTypeVo> budgetTypeObject;

    /**
     * 是否短信通知
     */
    private boolean sendMsg;

    /**
     * 短信通知
     */
    @Valid
    private List<NotifyScopeVo> notifyScope;

    private Integer status;
}